iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
自我挑戰組

從零打造客製化 AI 聊天機器人系列 第 8

[從零打造客製化 AI 聊天機器人] 初步學習 ChromaDB,存儲和檢索資料

  • 分享至 

  • xImage
  •  

ChromaDB 是一個原生開源的嵌入式資料庫,輕量且易用,主要使用在 AI 和機器學習,儲存和查詢向量資料庫,數據會藉由嵌入(Embedding)算法文本或圖像轉換而來,輕鬆建立LLM 應用程式,他也可運行在記憶體或作為資料庫伺服器使用。

優點:
輕量級開源資料庫
易於使用:透過 Python 套件直接安裝使用
功能多樣:Embedding 儲存、取用、查詢、檢索
支援多種服務:OpenAI、 Gemini、 Ollama,從文本生成到圖像檢所
整合:LangChain 和 LlamaIndex ,可接軌現有的 RAG(檢索增強生成)架構

接下來就開始安裝和簡易的操作使用:

1. 安裝chromadb

pip install chromadb

2. 建立資料庫
三種儲存方式,持久化資料庫、memory 或 http

  • Memory:
    簡易且輕量,資料存在記憶體,但應用程式重啟或資料庫重建時,資料會遺失,適合資料要快速存取,但不用持久化。

    import chromadb
    
    chroma_client = chromadb.Client()
    
  • 持久化資料庫:
    資料持久化到磁碟上,應用程式重啟後資料一樣可以載入,適合需要長期保存的向量資料。

    import chromadb
    
    chormadb_client = chormadb.PersistentClient(path="./data")
    
  • http:
    允許不同的應用程式通過 API 與資料庫交互
    運行伺服器:

    chromadb start --host 0.0.0.0 --port 8000
    

    客戶端連接伺服器:

    import chromadb
    
    # 創建一個連接到伺服器的 ChromaDB 客戶端
    chormadb_client = chromadb.Client(host="http://localhost", port=8000)
    

3. 創建集合 (Collection)
數據儲存在資料集合(Collection)中,每個集合可以儲存多個向量資料(documents)。

collection = chormadb_client.create_collection(name="collection_name")

4. 創建資料
將文件或資料嵌入向量,並將向量加入到資料集合。

collection.add(
    documents=["Document 1", "Document 2"], # 原始文本數據或文檔
    embeddings=[[1, 2, 3], [4, 5, 6]], # 向量嵌入的數值列表或數組
    metadatas=[{"author": "Alice", "topic": "AI"}, {"author": "Bob", "topic": "ML"}], # 附加數據
    ids=["doc1", "doc2"] # 唯一識別符
)
  • embeddings: 嵌入向量,用於進行相似度檢索。
  • documents: 對應於嵌入的原始文本資料,檢索結果會返回這些文檔。
  • metadatas: 與每個文檔相關的附加元數據,提供上下文或過濾選項。
  • ids: 唯一標識符,幫助管理和查找每個文檔或數據項。

5. 查詢向量資料庫
資料儲存後就可以根據嵌入向量進行相似度查詢,來檢索與查詢向量最接近的文件。

# 根據嵌入向量查詢相似文件
results  = collection.query(
    query_embeddings=[[1, 2, 3]],
    n_results=1
)

print(results)
  • query_texts:根據文本查詢,放入相關問題或字句,希望根據提供的文本相似結果進行檢索 (維度要相同)
  • query_embeddings:根據嵌入向量查詢,嵌入是將文本或其他數據轉換成數字向量過程,向量代表數據意圖
  • n_results:限制回傳的筆數

6. 更新與刪除資料

# 更新文檔向量
collection.update(
    ids=["doc1"],
    embeddings=[[7, 8, 9]]
)

# 刪除文檔
collection.delete(ids=["doc1"])

以上就是 chromadb 的介紹啦!


上一篇
[從零打造客製化 AI 聊天機器人] 初步學習 FastAPI ,新手友善
下一篇
[從零打造客製化 AI 聊天機器人] 基本的聊天功能
系列文
從零打造客製化 AI 聊天機器人13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言